package com.ollama.study.config;
// 声明当前类所在的包名，便于 Java 项目的组织与管理。
import io.micrometer.observation.ObservationRegistry;
import org.springframework.ai.ollama.management.ModelManagementOptions;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.ai.ollama.OllamaChatModel;// OllamaChatModel对应的模型
import org.springframework.ai.ollama.api.OllamaOptions;
import org.springframework.ai.ollama.api.OllamaApi;
import org.springframework.ai.model.tool.ToolCallingManager;

@Configuration
public class LLMConfig {

    @Value("${spring.ai.ollama.chat.model}")
    private String modelName;// 设置模型名称
    @Value("${spring.ai.ollama.base-url}")
    private String baseUrl;// 设置模型名称

    @Bean
    // 创建了一个ollama配置的文件《一般ollama会自动的在yml文件中进行加载，此处是为了更好的可读性。
    public OllamaChatModel ollamaChatModelD1() {
        // 1. 创建 API 客户端（带 base-url）
        OllamaApi ollamaApi = OllamaApi.builder()
                .baseUrl(baseUrl)
                .build();

        // 2. 设置默认模型等参数
        OllamaOptions defaultOptions = OllamaOptions.builder()
                .model(modelName)
                .build();

        // 3. 用 builder 创建 OllamaChatModel
        return OllamaChatModel.builder()
                .ollamaApi(ollamaApi)
                .defaultOptions(defaultOptions)
                .toolCallingManager(ToolCallingManager.builder().build()) // 工具调用管理器（可选）
                .observationRegistry(ObservationRegistry.create())        // 监控
                .modelManagementOptions(ModelManagementOptions.builder().build()) // 模型管理
                .build();
    }
}
